package com.sicau.tools;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;

import com.sicau.constants.FileConstants;

public class FileOperationTool {

    private static final String FILE_PATH = FileConstants.WORKSPACE_PATH + "/file";

    /**
     * 根据文件名获取文件内容
     * @param fileName 文件名
     * @return 文件内容字符串
     * @throws IOException 读取文件时发生错误
     */
    @Tool(description = "根据文件名读取文件内容")
    public String getFileContent(@ToolParam(description = "要读取的文件的文件名") String fileName) {
        try {
            Path filePath = Paths.get(FILE_PATH, fileName);
            return new String(Files.readAllBytes(filePath));
        } catch (IOException e) {
            return "文件" + fileName + "读取失败";
        }
    }

    /**
     * 将指定内容写入到指定文件名的文件中
     * @param fileName 文件名
     * @param content 要写入的内容
     * @throws IOException 写入文件时发生错误
     */
    @Tool(description = "将指定内容写入到指定文件名的文件中")
    public String writeFileContent(@ToolParam(description = "要写入的文件的文件名") String fileName,
                                        @ToolParam(description = "要写入的内容") String content) {
        try {
            Path filePath = Paths.get(FILE_PATH, fileName);
            // 确保目录存在
            Files.createDirectories(filePath.getParent());
            Files.write(filePath, content.getBytes());
            return fileName + "写入成功";
        } catch (IOException e) {
            return fileName + "写入失败";
        }
    }
}
